home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / madwifi / net80211 / ieee80211_monitor.h < prev    next >
C/C++ Source or Header  |  2006-05-11  |  5KB  |  159 lines

  1. /*-
  2.  * Copyright (c) 2005 John Bicket
  3.  * All rights reserved.
  4.  *
  5.  * Redistribution and use in source and binary forms, with or without
  6.  * modification, are permitted provided that the following conditions
  7.  * are met:
  8.  * 1. Redistributions of source code must retain the above copyright
  9.  *    notice, this list of conditions and the following disclaimer.
  10.  * 2. Redistributions in binary form must reproduce the above copyright
  11.  *    notice, this list of conditions and the following disclaimer in the
  12.  *    documentation and/or other materials provided with the distribution.
  13.  * 3. The name of the author may not be used to endorse or promote products
  14.  *    derived from this software without specific prior written permission.
  15.  *
  16.  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
  17.  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  18.  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
  19.  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
  20.  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
  21.  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  22.  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  23.  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  24.  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  25.  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  26.  *
  27.  * $Id: ieee80211_monitor.h 1488 2006-03-31 23:57:41Z kelmo $
  28.  */
  29. #ifndef _NET80211_IEEE80211_MONITOR_H_
  30. #define _NET80211_IEEE80211_MONITOR_H_
  31.  
  32.  
  33. #ifndef ARPHRD_IEEE80211_RADIOTAP
  34. #define ARPHRD_IEEE80211_RADIOTAP    803 /* IEEE 802.11 + radiotap header */
  35. #endif /* ARPHRD_IEEE80211_RADIOTAP */
  36.  
  37. #ifndef ARPHRD_IEEE80211_ATHDESC
  38. #define ARPHRD_IEEE80211_ATHDESC    804 /* IEEE 802.11 + atheros descriptor */
  39. #endif /* ARPHRD_IEEE80211_RADIOTAP */
  40.  
  41. #define ATHDESC_HEADER_SIZE    32
  42.  
  43. #include <net80211/ieee80211_radiotap.h>
  44. #include <hal/ah_desc.h>
  45. #include <ath/if_athvar.h>
  46. struct ieee80211_phy_params {
  47.     u_int8_t rate0;
  48.     u_int8_t rate1;
  49.     u_int8_t rate2;
  50.     u_int8_t rate3;
  51.  
  52.     u_int8_t try0;
  53.     u_int8_t try1;
  54.     u_int8_t try2;
  55.     u_int8_t try3;
  56.  
  57.     u_int8_t power;
  58.     u_int32_t flags;
  59. };
  60.  
  61.  
  62.  
  63. enum {
  64.     DIDmsg_lnxind_wlansniffrm        = 0x00000044,
  65.     DIDmsg_lnxind_wlansniffrm_hosttime    = 0x00010044,
  66.     DIDmsg_lnxind_wlansniffrm_mactime    = 0x00020044,
  67.     DIDmsg_lnxind_wlansniffrm_channel    = 0x00030044,
  68.     DIDmsg_lnxind_wlansniffrm_rssi        = 0x00040044,
  69.     DIDmsg_lnxind_wlansniffrm_sq        = 0x00050044,
  70.     DIDmsg_lnxind_wlansniffrm_signal    = 0x00060044,
  71.     DIDmsg_lnxind_wlansniffrm_noise        = 0x00070044,
  72.     DIDmsg_lnxind_wlansniffrm_rate        = 0x00080044,
  73.     DIDmsg_lnxind_wlansniffrm_istx        = 0x00090044,
  74.     DIDmsg_lnxind_wlansniffrm_frmlen    = 0x000A0044
  75. };
  76. enum {
  77.     P80211ENUM_msgitem_status_no_value    = 0x00
  78. };
  79. enum {
  80.     P80211ENUM_truth_false            = 0x00,
  81.     P80211ENUM_truth_true            = 0x01
  82. };
  83.  
  84. typedef struct {
  85.         u_int32_t did;
  86.         u_int16_t status;
  87.         u_int16_t len;
  88.         u_int32_t data;
  89. } p80211item_uint32_t;
  90.  
  91. typedef struct {
  92.         u_int32_t msgcode;
  93.         u_int32_t msglen;
  94. #define WLAN_DEVNAMELEN_MAX 16
  95.         u_int8_t devname[WLAN_DEVNAMELEN_MAX];
  96.         p80211item_uint32_t hosttime;
  97.         p80211item_uint32_t mactime;
  98.         p80211item_uint32_t channel;
  99.         p80211item_uint32_t rssi;
  100.         p80211item_uint32_t sq;
  101.         p80211item_uint32_t signal;
  102.         p80211item_uint32_t noise;
  103.         p80211item_uint32_t rate;
  104.         p80211item_uint32_t istx;
  105.         p80211item_uint32_t frmlen;
  106. } wlan_ng_prism2_header;
  107.  
  108.  
  109.  
  110. #define ATH_RX_RADIOTAP_PRESENT (               \
  111.     (1 << IEEE80211_RADIOTAP_TSFT)        | \
  112.         (1 << IEEE80211_RADIOTAP_FLAGS)         | \
  113.         (1 << IEEE80211_RADIOTAP_RATE)          | \
  114.         (1 << IEEE80211_RADIOTAP_CHANNEL)       | \
  115.         (1 << IEEE80211_RADIOTAP_ANTENNA)       | \
  116.         (1 << IEEE80211_RADIOTAP_DB_ANTSIGNAL)  | \
  117.         (1 << IEEE80211_RADIOTAP_FCS)           | \
  118.         0)
  119.  
  120. struct ath_rx_radiotap_header {
  121.         struct ieee80211_radiotap_header wr_ihdr;
  122.     u_int64_t wr_tsft;
  123.         u_int8_t wr_flags;
  124.         u_int8_t wr_rate;
  125.         u_int16_t wr_chan_freq;
  126.         u_int16_t wr_chan_flags;
  127.         u_int8_t wr_antenna;
  128.         u_int8_t wr_antsignal;
  129.     u_int32_t wr_fcs;
  130. };
  131.  
  132. #define ATH_TX_RADIOTAP_PRESENT (               \
  133.         (1 << IEEE80211_RADIOTAP_FLAGS)         | \
  134.         (1 << IEEE80211_RADIOTAP_RATE)          | \
  135.         (1 << IEEE80211_RADIOTAP_DBM_TX_POWER)  | \
  136.         (1 << IEEE80211_RADIOTAP_ANTENNA)       | \
  137.         0)
  138.  
  139. struct ath_tx_radiotap_header {
  140.         struct ieee80211_radiotap_header wt_ihdr;
  141.         u_int8_t wt_flags;                   /* XXX for padding */
  142.         u_int8_t wt_rate;
  143.         u_int8_t wt_txpower;
  144.         u_int8_t wt_antenna;
  145. };
  146.  
  147. /*
  148.  * Dispatch an skb to monitor-mode vap's.  The skb is assumed
  149.  * to have space at the front to push a wlan_ng_prims2_header.
  150.  */
  151. void ieee80211_input_monitor(struct ieee80211com *, struct sk_buff *,
  152.     struct ath_desc *, int, u_int32_t, struct ath_softc *);
  153.  
  154.  
  155. void ieee80211_monitor_encap(struct ieee80211vap *, struct sk_buff *);
  156.  
  157.  
  158. #endif /* _NET80211_IEEE80211_MONITOR_H_ */
  159.